﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Box.Entities;

namespace Box.Repository.Mapping
{
    public class ProveedorMap:EntityTypeConfiguration<Proveedor>
    {
        public ProveedorMap()
        {
            this.HasKey(p => p.Id);
            this.Property(p => p.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            this.Property(p => p.NombreEmpresa)
                .IsRequired()
                .HasMaxLength(150);

            this.Property(p => p.PropietarioEmpresa)
                .IsOptional()
                .HasMaxLength(150);

            this.Property(p => p.RucProvedor)
                .IsRequired();

            this.Property(p => p.DireccionProveedor)
                .IsOptional()
                .HasMaxLength(100);
            this.Property(p => p.NumeroCuentaProveedor)
                .IsRequired().HasMaxLength(25);

            this.Property(p => p.CorreoProveedor)
                .IsOptional().HasMaxLength(100);

            this.Property(p => p.TelefonoProveedor)
                .IsOptional().HasMaxLength(10);

            this.ToTable("PROVEEDORES");
            this.Property(p => p.Id).HasColumnName("Id");
            this.Property(p => p.NombreEmpresa).HasColumnName("NombreEmpresa");
            this.Property(p => p.PropietarioEmpresa).HasColumnName("PropietarioEmpresa");
            this.Property(p => p.RucProvedor).HasColumnName("RucProveedor");
            this.Property(p => p.DireccionProveedor).HasColumnName("DireccionProveedor");
            this.Property(p => p.NumeroCuentaProveedor).HasColumnName("NumeroCuenta");
            this.Property(p => p.CorreoProveedor).HasColumnName("CorreoProveedor");
            this.Property(p => p.TelefonoProveedor).HasColumnName("TelefonoProveedor");

            //this.HasRequired(p => p.Pagos)
            //    .WithMany()
            //    .HasForeignKey(p => p.IdPagos);
            this.HasRequired(c => c.Ubigeo)
    .WithMany(c => c.Proveedores)
    .HasForeignKey(t => t.idUbigeo)
    .WillCascadeOnDelete(false);

            this.HasRequired(p => p.Banco)
.WithMany()
.HasForeignKey(p => p.IdBanco)
.WillCascadeOnDelete(false);

        }
    }
}
